﻿var baseURL = "";
var isTopPage = false;
var isNewTopPage = false;
var portalServerPath = "http://www.sdmap.gov.cn/SDMapService/";  // 后台服务地址


//var post = function (url, data, success) {
//    data = data || {};
//    url = portalServerPath + url;
//    data.UserID = getCookie("USERID");
//    data.SessionID = getCookie("JSESSIONID");

//    $.ajax({
//        url: url,
//        data: JSON.stringify(data),
//        type: "post",
//        success: function (data) {
//            if (success && $.isFunction(success)) {
//                success(data);
//            }
//        },
//        error: function (XMLHttpRequest, textStatus, errorThrown) {
//        },
//        contentType: "application/json; charset=utf-8"
//    });
//}

//var postSync = function (url, data, success) {
//    data = data || {};
//    url = portalServerPath + url;
//    data.UserID = getCookie("USERID");
//    data.SessionID = getCookie("JSESSIONID");

//    $.ajax({
//        url: url,
//        data: JSON.stringify(data),
//        type: "post",
//        async: false,
//        success: function (data) {
//            if (success && $.isFunction(success)) {
//                success(data);
//            }
//        },
//        error: function (XMLHttpRequest, textStatus, errorThrown) {
//        },
//        contentType: "application/json; charset=utf-8"
//    });
//}

//var get = function (url, data, success) {
//    data = data || {};
//    url = portalServerPath + url;
//    data.UserID = currentUser.userID;
//    data.SessionID = currentUser.sessionID;

//    $.ajax({
//        url: url,
//        data: JSON.stringify(data),
//        type: "get",
//        success: function (data) {
//            success(data);
//        },
//        contentType: "application/json; charset=utf-8"
//    });
//}

//var getSync = function (url, data, success) {
//    data = data || {};
//    url = portalServerPath + url;
//    data.UserID = currentUser.userID;
//    data.SessionID = currentUser.sessionID;

//    $.ajax({
//        url: url,
//        data: JSON.stringify(data),
//        type: "get",
//        async: false,
//        success: function (data) {
//            success(data);
//        },
//        contentType: "application/json; charset=utf-8"
//    });
//}

//var getUrlParam = function (name) {
//    var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
//    var r = window.location.search.substr(1).match(reg);
//    if (r != null) return unescape(r[2]); return null;
//}

//var getUrlParamS = function (name) {
//    var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
//    var r = window.location.search.substr(1).match(reg);
//    if (r != null) return r[2]; return null;
//}

//var currentUser = {
//    userID: "",
//    sessionID: "",
//    userName: ""
//};


//$(function () {
//    currentUser.userID = getCookie("USERID");
//    currentUser.sessionID = getCookie("JSESSIONID");
//    currentUser.userName = getCookie("USERNAME");

//});

//function setCookie(name, value) {
//    var Days = 1;
//    var exp = new Date();
//    exp.setTime(exp.getTime() + Days * 24 * 60 * 60 * 1000);
//    document.cookie = name + "=" + escape(value) + ";expires=" + exp.toGMTString() + ";path=/";
//}

//function getCookie(name) {
//    var arr, reg = new RegExp("(^| )" + name + "=([^;]*)(;|$)");

//    if (arr = document.cookie.match(reg)) return unescape(arr[2]);
//    else return null;
//}

////删除cookie
//function delCookie(name) {
//    var exp = new Date();
//    exp.setTime(exp.getTime() - 10000);
//    var cval = getCookie(name);
//    if (cval != null)
//        document.cookie = name + "=" + escape(cval) + ";expires=" + exp.toGMTString() + ";path=/";
//}

///*------------------------------验证用户登陆权限------------------*/
////authCode:权限代码; success：返回结果回调方法
//function checkAuthority(authCode, success) {
//    var sessionModel = {};

//    sessionModel.UserID = getCookie("USERID");
//    sessionModel.SessionID = getCookie("JSESSIONID");
//    sessionModel.AuthCode = authCode;
//    var tokeKey = Util.MD5(sessionModel.UserID + (new Date).getDate());
//    post("CheckSession.svc/CheckAuthority", { value: JSON.stringify(sessionModel) }, function (data) {
//        switch (data.State) {
//            //未登录             
//            case 0:
//                delCookie(tokeKey);
//                delCookie("USERID");
//                delCookie("JSESSIONID");
//                delCookie("USERNAME");
//                $("#login").html("管理员");
//                $("#login").attr("href", baseURL + "/LoginRegister/login.html");
//                $("#reg").html("注册");
//                $("#reg").attr("href", baseURL + "/LoginRegister/register.html");
//                break;
//                //已登录但无权限        
//            case 1:
//                setCookie(tokeKey, 0);
//                if (isTopPage) {
//                    var showuser = getSubString(getCookie("USERNAME"), 5);
//                    $("#login").html(showuser);
//                    $("#login").attr("href", baseURL + "/myspace.html");
//                    $("#reg").html("退出");
//                    $("#reg").attr("href", "javaScript:userout()"); //用户退出
//                    if (data.IsAdmin) {
//                        $("#portalManager").show();
//                        $("#moreInfo").css('height', '52')
//                        $("#manageInfo").show();
//                        $("#manageUrl").attr("href", baseURL + data.ManageUrl);
//                        $("#correctInfo").show();
//                        $("#correctUrl").attr("href", baseURL + data.CorrectUrl);
//                        //$("#portalManager").attr("href", baseURL + data.ManageUrl);
//                    }
//                } else if (isNewTopPage) {
//                    var showuser = getSubString(getCookie("USERNAME"), 5);
//                    $("#login").html(showuser);
//                    $("#login").attr("href", baseURL + "/myspace.html");
//                    $("#reg").html("退出");
//                    $("#reg").attr("href", "javaScript:userout()"); //用户退出
//                    if (data.IsAdmin) {
//                        $("#portalManager").show();
//                        $("#moreImg").show();
//                        //$("#moreInfo").css('height', '52')
//                        $("#manageInfo").show();
//                        $("#manageUrl").attr("href", baseURL + data.ManageUrl);
//                        $("#correctInfo").show();
//                        $("#correctUrl").attr("href", baseURL + data.CorrectUrl);
//                    }
//                }
//                break;
//                //已登录且有权限         
//            case 2:
//                setCookie(tokeKey, 1);
//                if (isTopPage) {
//                    var showuser = getSubString(getCookie("USERNAME"), 5);
//                    $("#login").html(showuser);
//                    $("#login").attr("href", baseURL + "/myspace.html");
//                    $("#reg").html("退出");
//                    $("#reg").attr("href", "javaScript:userout()"); //用户退出
//                    if (data.IsAdmin) {
//                        $("#portalManager").show();
//                        //$("#moreInfo").css('height', '26')
//                        $("#manageInfo").show();
//                        $("#manageUrl").attr("href", baseURL + data.ManageUrl);
//                        $("#correctInfo").show();
//                        $("#correctUrl").attr("href", baseURL + data.CorrectUrl);
//                        //$("#portalManager").attr("href", baseURL + data.ManageUrl);
//                    }
//                } else if (isNewTopPage) {
//                    var showuser = getSubString(getCookie("USERNAME"), 5);
//                    $("#login").html(showuser);
//                    $("#login").attr("href", baseURL + "/myspace.html");
//                    $("#reg").html("退出");
//                    $("#reg").attr("href", "javaScript:userout()"); //用户退出
//                    if (data.IsAdmin) {
//                        $("#portalManager").show();
//                        $("#moreImg").show();
//                        //$("#moreInfo").css('height', '26')
//                        $("#manageInfo").show();
//                        $("#manageUrl").attr("href", baseURL + data.ManageUrl);
//                        $("#correctInfo").show();
//                        $("#correctUrl").attr("href", baseURL + data.CorrectUrl);
//                    }
//                }
//                break;
//            default:

//                break;
//        }
//        //返回结果回调方法
//        if (success && $.isFunction(success)) {
//            success(data.State);
//        }
//    });
//}

//function getSubString(data, subLenght) {
//    if (data != null && data.length > subLenght) {
//        return data.substring(0, subLenght) + "...";
//    } else {
//        return data;
//    }
//}

///*--------------------------用户退出-------------------*/
//function userout() {
//    postSync("UserManage.svc/LogOut", {}, function (data) {
//        if (data != null) {

//        }
//        delCookie("USERID");
//        delCookie("JSESSIONID");
//        delCookie("USERNAME");
//        $("#login").html("系统管理员");
//        $("#login").attr("href", baseURL + "/LoginRegister/login.html");
//        //$("#reg").html("注册");
//        //$("#reg").attr("href", baseURL + "/LoginRegister/register.html"); //用户注册
//        window.location.reload();
//    });
//}


if (typeof JSON !== 'object') {
    JSON = {};
}

(function () {
    'use strict';

    function f(n) {
        // Format integers to have at least two digits.
        return n < 10 ? '0' + n : n;
    }

    if (typeof Date.prototype.toJSON !== 'function') {

        Date.prototype.toJSON = function () {

            return isFinite(this.valueOf())
                ? this.getUTCFullYear() + '-' +
                    f(this.getUTCMonth() + 1) + '-' +
                    f(this.getUTCDate()) + 'T' +
                    f(this.getUTCHours()) + ':' +
                    f(this.getUTCMinutes()) + ':' +
                    f(this.getUTCSeconds()) + 'Z'
                : null;
        };

        String.prototype.toJSON =
            Number.prototype.toJSON =
            Boolean.prototype.toJSON = function () {
                return this.valueOf();
            };
    }

    var cx,
        escapable,
        gap,
        indent,
        meta,
        rep;


    function quote(string) {

        // If the string contains no control characters, no quote characters, and no
        // backslash characters, then we can safely slap some quotes around it.
        // Otherwise we must also replace the offending characters with safe escape
        // sequences.

        escapable.lastIndex = 0;
        return escapable.test(string) ? '"' + string.replace(escapable, function (a) {
            var c = meta[a];
            return typeof c === 'string'
                ? c
                : '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
        }) + '"' : '"' + string + '"';
    }


    function str(key, holder) {

        // Produce a string from holder[key].

        var i,          // The loop counter.
            k,          // The member key.
            v,          // The member value.
            length,
            mind = gap,
            partial,
            value = holder[key];

        // If the value has a toJSON method, call it to obtain a replacement value.

        if (value && typeof value === 'object' &&
                typeof value.toJSON === 'function') {
            value = value.toJSON(key);
        }

        // If we were called with a replacer function, then call the replacer to
        // obtain a replacement value.

        if (typeof rep === 'function') {
            value = rep.call(holder, key, value);
        }

        // What happens next depends on the value's type.

        switch (typeof value) {
            case 'string':
                return quote(value);

            case 'number':

                // JSON numbers must be finite. Encode non-finite numbers as null.

                return isFinite(value) ? String(value) : 'null';

            case 'boolean':
            case 'null':

                // If the value is a boolean or null, convert it to a string. Note:
                // typeof null does not produce 'null'. The case is included here in
                // the remote chance that this gets fixed someday.

                return String(value);

                // If the type is 'object', we might be dealing with an object or an array or
                // null.

            case 'object':

                // Due to a specification blunder in ECMAScript, typeof null is 'object',
                // so watch out for that case.

                if (!value) {
                    return 'null';
                }

                // Make an array to hold the partial results of stringifying this object value.

                gap += indent;
                partial = [];

                // Is the value an array?

                if (Object.prototype.toString.apply(value) === '[object Array]') {

                    // The value is an array. Stringify every element. Use null as a placeholder
                    // for non-JSON values.

                    length = value.length;
                    for (i = 0; i < length; i += 1) {
                        partial[i] = str(i, value) || 'null';
                    }

                    // Join all of the elements together, separated with commas, and wrap them in
                    // brackets.

                    v = partial.length === 0
                    ? '[]'
                    : gap
                    ? '[\n' + gap + partial.join(',\n' + gap) + '\n' + mind + ']'
                    : '[' + partial.join(',') + ']';
                    gap = mind;
                    return v;
                }

                // If the replacer is an array, use it to select the members to be stringified.

                if (rep && typeof rep === 'object') {
                    length = rep.length;
                    for (i = 0; i < length; i += 1) {
                        if (typeof rep[i] === 'string') {
                            k = rep[i];
                            v = str(k, value);
                            if (v) {
                                partial.push(quote(k) + (gap ? ': ' : ':') + v);
                            }
                        }
                    }
                } else {

                    // Otherwise, iterate through all of the keys in the object.

                    for (k in value) {
                        if (Object.prototype.hasOwnProperty.call(value, k)) {
                            v = str(k, value);
                            if (v) {
                                partial.push(quote(k) + (gap ? ': ' : ':') + v);
                            }
                        }
                    }
                }

                // Join all of the member texts together, separated with commas,
                // and wrap them in braces.

                v = partial.length === 0
                ? '{}'
                : gap
                ? '{\n' + gap + partial.join(',\n' + gap) + '\n' + mind + '}'
                : '{' + partial.join(',') + '}';
                gap = mind;
                return v;
        }
    }

    // If the JSON object does not yet have a stringify method, give it one.

    if (typeof JSON.stringify !== 'function') {
        escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g;
        meta = {    // table of character substitutions
            '\b': '\\b',
            '\t': '\\t',
            '\n': '\\n',
            '\f': '\\f',
            '\r': '\\r',
            '"': '\\"',
            '\\': '\\\\'
        };
        JSON.stringify = function (value, replacer, space) {

            // The stringify method takes a value and an optional replacer, and an optional
            // space parameter, and returns a JSON text. The replacer can be a function
            // that can replace values, or an array of strings that will select the keys.
            // A default replacer method can be provided. Use of the space parameter can
            // produce text that is more easily readable.

            var i;
            gap = '';
            indent = '';

            // If the space parameter is a number, make an indent string containing that
            // many spaces.

            if (typeof space === 'number') {
                for (i = 0; i < space; i += 1) {
                    indent += ' ';
                }

                // If the space parameter is a string, it will be used as the indent string.

            } else if (typeof space === 'string') {
                indent = space;
            }

            // If there is a replacer, it must be a function or an array.
            // Otherwise, throw an error.

            rep = replacer;
            if (replacer && typeof replacer !== 'function' &&
                    (typeof replacer !== 'object' ||
                    typeof replacer.length !== 'number')) {
                throw new Error('JSON.stringify');
            }

            // Make a fake root object containing our value under the key of ''.
            // Return the result of stringifying the value.

            return str('', { '': value });
        };
    }


    // If the JSON object does not yet have a parse method, give it one.

    if (typeof JSON.parse !== 'function') {
        cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g;
        JSON.parse = function (text, reviver) {

            // The parse method takes a text and an optional reviver function, and returns
            // a JavaScript value if the text is a valid JSON text.

            var j;

            function walk(holder, key) {

                // The walk method is used to recursively walk the resulting structure so
                // that modifications can be made.

                var k, v, value = holder[key];
                if (value && typeof value === 'object') {
                    for (k in value) {
                        if (Object.prototype.hasOwnProperty.call(value, k)) {
                            v = walk(value, k);
                            if (v !== undefined) {
                                value[k] = v;
                            } else {
                                delete value[k];
                            }
                        }
                    }
                }
                return reviver.call(holder, key, value);
            }


            // Parsing happens in four stages. In the first stage, we replace certain
            // Unicode characters with escape sequences. JavaScript handles many characters
            // incorrectly, either silently deleting them, or treating them as line endings.

            text = String(text);
            cx.lastIndex = 0;
            if (cx.test(text)) {
                text = text.replace(cx, function (a) {
                    return '\\u' +
                        ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
                });
            }

            // In the second stage, we run the text against regular expressions that look
            // for non-JSON patterns. We are especially concerned with '()' and 'new'
            // because they can cause invocation, and '=' because it can cause mutation.
            // But just to be safe, we want to reject all unexpected forms.

            // We split the second stage into 4 regexp operations in order to work around
            // crippling inefficiencies in IE's and Safari's regexp engines. First we
            // replace the JSON backslash pairs with '@' (a non-JSON character). Second, we
            // replace all simple value tokens with ']' characters. Third, we delete all
            // open brackets that follow a colon or comma or that begin the text. Finally,
            // we look to see that the remaining characters are only whitespace or ']' or
            // ',' or ':' or '{' or '}'. If that is so, then the text is safe for eval.

            if (/^[\],:{}\s]*$/
                    .test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@')
                        .replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']')
                        .replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) {

                // In the third stage we use the eval function to compile the text into a
                // JavaScript structure. The '{' operator is subject to a syntactic ambiguity
                // in JavaScript: it can begin a block or an object literal. We wrap the text
                // in parens to eliminate the ambiguity.

                j = eval('(' + text + ')');

                // In the optional fourth stage, we recursively walk the new structure, passing
                // each name/value pair to a reviver function for possible transformation.

                return typeof reviver === 'function'
                    ? walk({ '': j }, '')
                    : j;
            }

            // If the text is not JSON parseable, then a SyntaxError is thrown.

            throw new SyntaxError('JSON.parse');
        };
    }
}());

function arrayIndex(data, value) {
    for (var i = 0, j; j = data[i]; i++) {
        if (j == value) { return i; }
    }
    return -1;
}
/** 格式化输入字符串**/
String.prototype.format = function () {
    var args = arguments;
    return this.replace(/\{(\d+)\}/g, function (s, i) {
        return args[i];
    });
}

window.Util || (window.Util = {});
window.Util.MD5 || (window.Util.MD5 = function (k) {
    function m(a) {
        str = "";
        for (j = 0; 3 >= j; j++) str += "0123456789abcdef".charAt(a >> 8 * j + 4 & 15) + "0123456789abcdef".charAt(a >> 8 * j & 15);
        return str
    }
    function f(a, b) {
        var c = (a & 65535) + (b & 65535);
        return (a >> 16) + (b >> 16) + (c >> 16) << 16 | c & 65535
    }
    function g(a, b, c, d, g, e) {
        a = f(f(b, a), f(d, e));
        return f(a << g | a >>> 32 - g, c)
    }
    function e(a, b, c, d, e, f, h) {
        return g(b & c | ~b & d, a, b, e, f, h)
    }
    function h(a, b, c, d, e, f, h) {
        return g(b & d | c & ~d, a, b, e, f, h)
    }
    function l(a, b, c, d, e, f, h) {
        return g(c ^ (b | ~d), a, b, e, f, h)
    }
    return function (a) {
        nblk = (a.length + 8 >> 6) + 1;
        blks = Array(16 * nblk);
        for (i = 0; i < 16 * nblk; i++) blks[i] = 0;
        for (i = 0; i < a.length; i++) blks[i >> 2] |= a.charCodeAt(i) << i % 4 * 8;
        blks[i >> 2] |= 128 << i % 4 * 8;
        blks[16 * nblk - 2] = 8 * a.length;
        x = blks;
        a = 1732584193;
        var b = -271733879,
        c = -1732584194,
        d = 271733878;
        for (i = 0; i < x.length; i += 16) {
            var k = a,
            n = b,
            p = c,
            q = d;
            a = e(a, b, c, d, x[i + 0], 7, -680876936);
            d = e(d, a, b, c, x[i + 1], 12, -389564586);
            c = e(c, d, a, b, x[i + 2], 17, 606105819);
            b = e(b, c, d, a, x[i + 3], 22, -1044525330);
            a = e(a, b, c, d, x[i + 4], 7, -176418897);
            d = e(d, a, b, c, x[i + 5], 12, 1200080426);
            c = e(c, d, a, b, x[i + 6], 17, -1473231341);
            b = e(b, c, d, a, x[i + 7], 22, -45705983);
            a = e(a, b, c, d, x[i + 8], 7, 1770035416);
            d = e(d, a, b, c, x[i + 9], 12, -1958414417);
            c = e(c, d, a, b, x[i + 10], 17, -42063);
            b = e(b, c, d, a, x[i + 11], 22, -1990404162);
            a = e(a, b, c, d, x[i + 12], 7, 1804603682);
            d = e(d, a, b, c, x[i + 13], 12, -40341101);
            c = e(c, d, a, b, x[i + 14], 17, -1502002290);
            b = e(b, c, d, a, x[i + 15], 22, 1236535329);
            a = h(a, b, c, d, x[i + 1], 5, -165796510);
            d = h(d, a, b, c, x[i + 6], 9, -1069501632);
            c = h(c, d, a, b, x[i + 11], 14, 643717713);
            b = h(b, c, d, a, x[i + 0], 20, -373897302);
            a = h(a, b, c, d, x[i + 5], 5, -701558691);
            d = h(d, a, b, c, x[i + 10], 9, 38016083);
            c = h(c, d, a, b, x[i + 15], 14, -660478335);
            b = h(b, c, d, a, x[i + 4], 20, -405537848);
            a = h(a, b, c, d, x[i + 9], 5, 568446438);
            d = h(d, a, b, c, x[i + 14], 9, -1019803690);
            c = h(c, d, a, b, x[i + 3], 14, -187363961);
            b = h(b, c, d, a, x[i + 8], 20, 1163531501);
            a = h(a, b, c, d, x[i + 13], 5, -1444681467);
            d = h(d, a, b, c, x[i + 2], 9, -51403784);
            c = h(c, d, a, b, x[i + 7], 14, 1735328473);
            b = h(b, c, d, a, x[i + 12], 20, -1926607734);
            a = g(b ^ c ^ d, a, b, x[i + 5], 4, -378558);
            d = g(a ^ b ^ c, d, a, x[i + 8], 11, -2022574463);
            c = g(d ^ a ^ b, c, d, x[i + 11], 16, 1839030562);
            b = g(c ^ d ^ a, b, c, x[i + 14], 23, -35309556);
            a = g(b ^ c ^ d, a, b, x[i + 1], 4, -1530992060);
            d = g(a ^ b ^ c, d, a, x[i + 4], 11, 1272893353);
            c = g(d ^ a ^ b, c, d, x[i + 7], 16, -155497632);
            b = g(c ^ d ^ a, b, c, x[i + 10], 23, -1094730640);
            a = g(b ^ c ^ d, a, b, x[i + 13], 4, 681279174);
            d = g(a ^ b ^ c, d, a, x[i + 0], 11, -358537222);
            c = g(d ^ a ^ b, c, d, x[i + 3], 16, -722521979);
            b = g(c ^ d ^ a, b, c, x[i + 6], 23, 76029189);
            a = g(b ^ c ^ d, a, b, x[i + 9], 4, -640364487);
            d = g(a ^ b ^ c, d, a, x[i + 12], 11, -421815835);
            c = g(d ^ a ^ b, c, d, x[i + 15], 16, 530742520);
            b = g(c ^ d ^ a, b, c, x[i + 2], 23, -995338651);
            a = l(a, b, c, d, x[i + 0], 6, -198630844);
            d = l(d, a, b, c, x[i + 7], 10, 1126891415);
            c = l(c, d, a, b, x[i + 14], 15, -1416354905);
            b = l(b, c, d, a, x[i + 5], 21, -57434055);
            a = l(a, b, c, d, x[i + 12], 6, 1700485571);
            d = l(d, a, b, c, x[i + 3], 10, -1894986606);
            c = l(c, d, a, b, x[i + 10], 15, -1051523);
            b = l(b, c, d, a, x[i + 1], 21, -2054922799);
            a = l(a, b, c, d, x[i + 8], 6, 1873313359);
            d = l(d, a, b, c, x[i + 15], 10, -30611744);
            c = l(c, d, a, b, x[i + 6], 15, -1560198380);
            b = l(b, c, d, a, x[i + 13], 21, 1309151649);
            a = l(a, b, c, d, x[i + 4], 6, -145523070);
            d = l(d, a, b, c, x[i + 11], 10, -1120210379);
            c = l(c, d, a, b, x[i + 2], 15, 718787259);
            b = l(b, c, d, a, x[i + 9], 21, -343485551);
            a = f(a, k);
            b = f(b, n);
            c = f(c, p);
            d = f(d, q)
        }
        return m(a) + m(b) + m(c) + m(d)
    }(k)
});